容器映像(container image)是開發人員創建並註冊的程序包(package),包含在容器中運行所需的所有文件(通常採layering分層方式組織)。映像(image) 通常包含很多 層(layer),例如最小化的作業系統(OS)核心(又稱基礎層base layer),應用程序框架和自定義的代碼。
即使容器 主機(host) 可以直接聯繫一個 登錄中心(registry) 以取得映像並將其部署到一個容器中,容器的 協調器(orchestrators),如Kubernetes (K8S)、Docker Swarm及Mesos等,可以自動化部署過程,從登錄中心下載映像、將其部署到容器,並管理容器運行等。
容器就像是"寵物、牛、雞和昆蟲"這個比喻中的雞,它的部署主要是為了彈性(Elasticity)。所謂的彈性是指“規模可以自動放大並縮小(scale out and scale in)”和“性能可以自動升級與降級(scale up and scale down)”的能力。
我們會細心地照顧我們的寵物(pets),但會毫不後悔地殺死並吃掉了牛與雞等動物。虛擬主機(VM)和容器都像是動物一樣,可以根據我們的決定隨時銷毀、更換和增加的工作負載(workload)。然而,不變性(Immutability) 和 無狀態(stateless) 是容器實現 彈性(Elasticity) 的兩個關鍵屬性。
不變性是指“隨著時間的流逝不變或無法改變。”(Google) 我們可以將容器視為唯讀;更新容器的唯一方法是用新容器將舊的取代。無狀態意味著容器不會在其本地存儲中保留數據;但是,遠程存儲庫可用於在容器之間保留(persist)和共享狀態。
大多數應用程序容器技術都實現了不變性的概念。換句話說,容器本身應作為已部署但未更改的無狀態實體進行操作。當需要升級正在運行的容器或更改其內容時,只需將其銷毀並替換為具有更新的新容器即可。
資料來源: NIST SP 800-192
覆蓋網絡通常用於隔離節點之間的流量。然而,這可能會導致非容器感知防禦工具難以監控流量。
在某些情況下,適合將相同目的、敏感性和 威脅態勢(threat posture) 的容器分組後,部署在同一個主機(host)上。但是,它並不適用於不具有相同安全要求的容器。
僅將具有相同目的,敏感性和威脅狀態的容器分組在一個主機OS內核上,以允許進行深度防禦。
按用途,敏感度和威脅狀態對容器進行細分,可以提供更多的深度防禦。可以通過使用多個物理服務器來提供此分段,但是現代虛擬機管理程序還提供了足夠強大的隔離度,可以有效地緩解這些風險。
資料來源: NIST SP 800-192
NIST建議組織應遵循以下建議,以幫助確保其容器技術實施和使用的安全性:
我的新書 《追求高效能的CISSP:安全和風險管理》可幫助CISSP有志者建立可靠的概念安全模型。它不僅是信息安全的教程,還是CISSP考試的學習指南,也是安全專業人員的參考資料。
原始來源: The Basics of Containerization
「應用程序容器安全性指南」應該是NIST SP800-190才對
https://csrc.nist.gov/publications/detail/sp/800-190/final